package net.qiqb.core.executing.annotation;

import java.lang.annotation.*;

/**
 * 被标记的类标识为一个命令
 */
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface Command {

    /**
     * 命令需要操作的领域对象。
     * 领域对象包括聚合根或者领域服务
     *
     * @return 此命令操作的领域du聚合（根）对象
     */
    Class<?> value() default void.class;

    /**
     * 命令的名称：需要保证唯一，默认命令会以命令的类名作为名称，当设置了此值，默认命令类名将失效。
     *
     * @return 命令名称
     */
    String name() default "";

    /**
     * 领域对象名称
     *
     * @return
     */
    String domainName() default "";

}
